/*
 * ContentHandler.hpp
 *
 *  Created on: Dec 10, 2013
 *      Author: paste
 */

#ifndef CONTENTHANDLER_HPP_
#define CONTENTHANDLER_HPP_

namespace saxpp
{
  template<class CH = char, class TRAITS = std::char_traits<CH> >
    class ContentHandler
    {
    public:
      typename CH char_type;
      typename TRAITS char_traits;
      typename std::basic_string<char_type, char_traits> string_type;

      virtual
      ~ContentHandler()
      {
      }

      virtual void
      characters(char_type */*ch*/, const int &/*start*/,
          const int &/*length*/) = 0;

      virtual void
      endDocument() = 0;

      virtual void
      endElement(const string_type &/*uri*/, const string_type &/*localName*/,
          const string_type &/*qName*/) = 0;

      virtual void
      endPrefixMapping(const string_type &/*prefix*/) = 0;

      virtual void
      ignorableWhitespace(char_type */*ch*/, const int &/*start*/,
          const int &/*end*/) = 0;

      virtual void
      processingInstruction(const string_type &/*target*/,
          const string_type &/*data*/) = 0;

      virtual void
      setDocumentLocator(Locator<char_type, char_traits> */*locator*/) = 0;

      virtual void
      skippedEntity(const string_type &/*name*/) = 0;

      virtual void
      startDocument() = 0;

      virtual void
      startElement(const string_type &/*uri*/, const string_type &/*localName*/,
          const string_type &/*qName*/,
          const Attributes<char_type, char_traits> &/*atts*/) = 0;

      virtual void
      startPrefixMapping(const string_type &/*prefix*/,
          const string_type &/*uri*/) = 0;

    };

}

#endif /* CONTENTHANDLER_HPP_ */
